package loja.clientes;

import java.util.LinkedList;
import utilities.Data;

public class Factura {

	private int numero_factura;
	private int numero_cliente;
	private Data data;
	
	private LinkedList<LinhaFactura> linhas_factura = new LinkedList<LinhaFactura>();

	/*
	 * Este metodo permite criar uma factura
	 */
	public Factura(int numero_factura, int numero_cliente, Data data){
		this.numero_factura = numero_factura;
		this.numero_cliente = numero_cliente;
		this.data = data;
	}

	/*
	 * Este metodo devolve o numero da factura
	 */
	public int getNumFactura() {
		return numero_factura;
	}

	/*
	 * Este metodo devolve o numero de cliente a que respeita a factura
	 */
	public int getNumeroClienteFactura() {
		return numero_cliente;
	}

	/*
	 * Este metodo devolve a data a que foi feita a factura
	 */
	public Data getDataFactura() {
		return data;
	}

	/*
	 * Este metodo devolve as linhas de factura da factura
	 */
	public LinkedList<LinhaFactura> getLinhasFactura(){
		return linhas_factura;
	}
	
	/*
	 * Este metodo permite adicionar uma linha de factura a uma factura
	 */
	public boolean adiciona(LinhaFactura linha){
		return linhas_factura.add(linha);
	}
	
	/*
	 * Este metodo soma o resultado das linhas de factura
	 */
	public double totalFacturaLiquido(){
		double total = 0;
		for (LinhaFactura linha : linhas_factura)
			total += linha.totalLinha();
		return total;
	}
	
	/*
	 * Este metodo permite calcular o IVA 
	 */
	public double calculaIVA(){	
		double valor_iva;
		valor_iva = totalFacturaLiquido() * 0.21;
		return valor_iva;
	}
	
	/*
	 * Este metodo calcula o valor total da factura
	 */
	public double totalFactura(){
		double valor_total;
		valor_total = totalFacturaLiquido() + calculaIVA();
		return valor_total;
	}

}
